/* 
面试题：一个数组中，已知只有一种数出现了奇数次，其他所有数都出现了偶数次，怎么找到出现奇数次的数。
 改成：有两种数出现了奇数次，其他所有数都出现了偶数次，求这两个出现奇数次的数。
时复O(N)，额外空间复杂度O(1)
*/
let method = function (arr) {
  let err = 0;
  arr.forEach((element) => {
    err ^= element;
  });
  // 提取最右边为1的位置
  let rightOne = err & (~err + 1);
  console.log(rightOne);

  let onlyOne = 0;
  arr.forEach((element) => {
    if ((element & rightOne) !== 0) {
      console.log(element);
      onlyOne ^= element;
    }
  });
  return [onlyOne, err ^ onlyOne];
};

module.exports = {
  method,
};
